package com.kgc.scd.util;

import com.kgc.scd.constant.CommonConstant;

/**
 * Created On : 2022/10/19 0019.
 * <p>
 * Author : shiguangchuan
 * <p>
 * Description: 统一返回构建工具类
 */
public class ResultBuildUtil {

    /**
     * @author : shiguangchuan
     * @date   : 2022/10/19 0019
     * @param  : []
     * @return : void
     * @description : 构建成功返回，支持任意类型参数
     */
    public static <T> RequestResult<T> success(T t){

        // 创建同一返回成功的结果对象
        RequestResult<T> requestResult = new RequestResult<T>();
        requestResult.setCode(CommonConstant.UNIFY_RESULT_SUCCESS_CODE);
        requestResult.setMsg(CommonConstant.UNIFY_RESULT_SUCCESS_MSG);
        requestResult.setData(t);

        return requestResult;

    }


    /**
     * @author : shiguangchuan
     * @date   : 2022/10/19 0019
     * @param  : []
     * @return : void
     * @description : 构建成功返回，支持空参数
     */
    public static <T> RequestResult<T> success(){
        return success(null);
    }


    /**
     * @author : shiguangchuan
     * @date   : 2022/10/19 0019
     * @param  : []
     * @return : void
     * @description : 构建成功返回，支持自定义错误码和说明，支持任意参数类型
     */
    public static <T> RequestResult<T> success(String errorCode,String errorMsg,T t){

        // 创建同一返回失败的结果对象
        RequestResult<T> requestResult = new RequestResult<T>();
        requestResult.setCode(errorCode);
        requestResult.setMsg(errorMsg);
        requestResult.setData(t);

        return requestResult;
    }

    /**
     * @author : shiguangchuan
     * @date   : 2022/10/19 0019
     * @param  : []
     * @return : void
     * @description : 构建失败返回，支持任意类型参数，用于不便于归类的错误结果返回
     */
    public static <T> RequestResult<T> fail(T t){

        // 创建同一返回成功的结果对象
        RequestResult<T> requestResult = new RequestResult<T>();
        requestResult.setCode(CommonConstant.UNIFY_RESULT_FAIL_CODE);
        requestResult.setMsg(CommonConstant.UNIFY_RESULT_FAIL_MSG);
        requestResult.setData(t);

        return requestResult;
    }


    /**
     * @author : shiguangchuan
     * @date   : 2022/10/19 0019
     * @param  : []
     * @return : void
     * @description : 构建失败返回，支持空参数
     */
    public static <T> RequestResult<T> fail(){
        return fail(null);
    }

    /**
     * @author : shiguangchuan
     * @date   : 2022/10/19 0019
     * @param  : []
     * @return : void
     * @description : 构建失败返回，支持自定义错误码和说明，支持空参类型
     */
    public static <T> RequestResult<T> fail(String errorCode,String errorMsg){

        // 创建同一返回失败的结果对象
        RequestResult<T> requestResult = new RequestResult<T>();
        requestResult.setCode(errorCode);
        requestResult.setMsg(errorMsg);
        requestResult.setData(null);

        return requestResult;
    }

    /**
     * @author : shiguangchuan
     * @date   : 2022/10/19 0019
     * @param  : []
     * @return : void
     * @description : 构建失败返回，支持自定义错误码和说明，支持任意参数类型
     */
    public static <T> RequestResult<T> fail(String errorCode,String errorMsg,T t){

        // 创建同一返回失败的结果对象
        RequestResult<T> requestResult = new RequestResult<T>();
        requestResult.setCode(errorCode);
        requestResult.setMsg(errorMsg);
        requestResult.setData(t);

        return requestResult;
    }



}
